package core

import (
	"fmt"
	"strings"
	"time"

	"github.com/beego/beego/v2/client/httplib"
	"github.com/buger/jsonparser"
)

func init() {
	AddCommand("", []Function{
		{
			Rules: []string{
				"^小爱(.*)$",
			},
			Handle: func(s Sender) interface{} {
				api := sillyGirl.Get("小爱同学")
				if api == "" {
					return "未设置小同学api"
				}
				reply := func(str string) string {
					str, _ = httplib.Get(fmt.Sprintf(api, str)).String()
					// s.Reply(str)
					if gjson := sillyGirl.Get("小爱同学gjson"); gjson != "" {
						str, _ = jsonparser.GetString([]byte(str), strings.Split(gjson, ".")...)
					}
					if str == "" {
						str = "暂时无法回复。"
					}
					return str
				}
				msg := s.Get()
				msg = strings.Trim(msg, " ")
				if strings.Contains(msg, "对话模式") {
					stop := false
					s.Reply(reply("小爱"))
					for {
						if stop {
							return nil
						}
						s.Await(s, func(s2 Sender) interface{} {
							msg := s2.GetContent()
							msg = strings.Trim(msg, " ")
							if strings.Contains(msg, "闭嘴") {
								stop = true
							}
							return reply(msg)
						}, `[\s\S]*`, time.Duration(time.Second*5000))
					}
				}
				if msg == "" {
					msg = "小爱"
				}
				return reply(msg)
			},
		},
		// {
		// 	Rules: []string{
		// 		"^挑战古诗词$",
		// 	},
		// 	Handle: func(s Sender) interface{} {
		// 		api := sillyGirl.Get("小爱同学")
		// 		if api == "" {
		// 			return "未设置小同学api"
		// 		}
		// 		reply := func(str string) string {
		// 			str, _ = httplib.Get(fmt.Sprintf(api, str)).String()
		// 			// s.Reply(str)
		// 			if gjson := sillyGirl.Get("小爱同学gjson"); gjson != "" {
		// 				str, _ = jsonparser.GetString([]byte(str), strings.Split(gjson, ".")...)
		// 			}
		// 			if str == "" {
		// 				str = "暂时无法回复。"
		// 			}
		// 			return str
		// 		}
		// 		msg := s.Get()
		// 		msg = strings.Trim(msg, " ")
		// 		if strings.Contains(msg, "对话模式") {
		// 			stop := false
		// 			s.Reply(reply("小爱"))
		// 			for {
		// 				if stop {
		// 					return nil
		// 				}
		// 				s.Await(s, func(s2 Sender) interface{} {
		// 					msg := s2.GetContent()
		// 					msg = strings.Trim(msg, " ")
		// 					if strings.Contains(msg, "闭嘴") {
		// 						stop = true
		// 					}
		// 					return reply(msg)
		// 				}, `[\s\S]*`, time.Duration(time.Second*5000))
		// 			}
		// 		}
		// 		if msg == "" {
		// 			msg = "小爱"
		// 		}
		// 		return reply(msg)
		// 	},
		// },
	})
}
